#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
int arr[N];
int cnt[N];
LL s[N];
map<LL, int>mp[N];
int n, k; int main()
{
	scanf("%d%d", &n, &k);
	int ans = 0;
	cnt[0] = 1;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &arr[i]);
		s[i] = s[i - 1] + arr[i];
		for (int j = 0; j <= 30; j++) {
			if (s[i]- (int)pow(k, j) >= 0) {   
				ans += cnt[s[i] - (int)pow(k, j)];
			}
			else {
				break;
			}
		}
		cnt[s[i]]++;
	}
	printf("%d", ans);
	return 0;
}
//int main()
//{
//	scanf("%d%d", &n, &k);
//	for (int i = 1; i <= n; i++) {
//		scanf("%d", &arr[i]);
//		s[i] = s[i - 1] + arr[i];
//	}
//	for (int i = 1; i <= n; i++) {
//		for (int j = 0; j <= 30; j++) {
//			if (s[i] - (int)pow(k, j) >= 0) {
//				mp[i][s[i] - (int)pow(k, j)] = i;
//			} 
//			else {
//				break;
//			}
//		}
//	}
//	int ans = 0;
//	for (int i = 0; i <= n - 1; i++) {
//		if (mp[i+1][s[i]] >= i) {
//			ans++;
//		}
//	}
//	printf("%d", ans);
//	return 0;
//}